package com.jacobson.core.widget.storage

/**
 * ================================================
 *
 *  @author Wucz on 2018/8/6 10:36
 * ================================================
 */

interface Storage<K, V> {

    /**
     * 获取KEY对应的资源
     * @param key key
     * @return key对应的资源
     */
    fun get(key: K): V?

    /**
     *  加入缓存
     *  @param key key
     *  @param value 值
     *  @return 返回该key旧的值，如果旧值为空，则返回null
     */
    fun put(key: K, value: V): V?

    /**
     *  移除key对应的条目
     *  @param key key
     *  @return 返回key对应的值，如果key对应的值不存在，则返回null
     */
    fun remove(key: K): V?

    /**
     * 返回当前存储已占用的总数
     */
    fun size(): Int

    /**
     * 是否含该key
     * @param key key
     * @return 有则true,无则false
     */
    fun containsKey(key: K): Boolean

    /**
     * 返回所有key的集合
     * @return 所有key的集合
     */
    fun keySet(): Set<K>

    /**
     * 清空所有内容
     */
    fun clear()
}